/*
 * @Author: xuwejie 1529315455@qq.com
 * @Date: 2024-01-09 15:42:39
 * @LastEditors: xuwejie 1529315455@qq.com
 * @LastEditTime: 2024-02-01 10:47:10
 * @FilePath: \v9\src\utils\tracking.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import axios from "axios";

export function getData(response, begin) {
  let { config, request, data } = response;
  let obj = {
    api: request.responseURL || "", // api请求URL
    begin: new Date(begin).toLocaleString() || "", // 请求开始时间
    code: data.errcode + '' || "", // 返回状态码
    environment: process.env.ENV || "", // 环境
    msg: data.errmsg || "", // 返回消息
    page: window.location.href || "", // 页面地址
    path: window.location.hash || "", // 请求路径
    performanceObj: JSON.stringify(config.params || config.data), // 请求数据
    success: data.errcode == 0 ? "1" : "0", // 是否成功 1成功
    time: (new Date().getTime() - new Date(begin).getTime()) + "" || "", // 请求时间
    traceid: (config.params || config.data).sign || "",
    ua: navigator.userAgentm || "", // 设备名称
    vp: window.innerWidth + 'X' + window.innerHeight, // 视口大小
    date: new Date().toLocaleDateString().replaceAll("/", "-") || "", // 当前时间
    type:"分拣端",
  }
  if (navigator.connection) {
    obj.ct = navigator.connection.effectiveType || '' // 网络类型
  }
  pushData(obj); // 在满足条件时调用pushData函数
}

export function errData(error, begin) {
  let errorObj = { ...error }
  let { config, request , response } = errorObj;
  if(response.data.trace) delete response.data.trace
  let obj = {
    api: request.responseURL || "", // api请求URL
    begin: new Date(begin).toLocaleString() || "", // 请求开始时间
    page: window.location.href || "", // 页面地址
    path: window.location.hash || "", // 请求路径
    time: (new Date().getTime() - new Date(begin).getTime()) + "" || "", // 请求时间
    ua: navigator.userAgentm || "", // 设备名称
    performanceObj: JSON.stringify(config.params || config.data), // 请求数据
    traceid: (config.params || config.data).sign || "",
    vp: window.innerWidth + 'X' + window.innerHeight, // 视口大小
    date: new Date().toLocaleDateString().replaceAll("/", "-") || "", // 当前时间
    errmsg: "系统错误", // 提示后端消息
    type:"分拣端",
  }
  if (navigator.connection) {
    obj.ct = navigator.connection.effectiveType || '' // 网络类型
  }
  if(response.data){
    obj.preview = JSON.stringify(response.data)
  }
  pushData(obj); // 在满足条件时调用pushData函数
}

function handleData(arr, callback) {
  let timer = null;

  function pushData(data) {
    if (timer) {
      clearTimeout(timer);
    }
    arr.push(data);
    timer = setTimeout(() => {
      callback(arr);
      arr = [];
    }, 2000);
  }

  return pushData;
}

let url = "https://caidongjia.cn-beijing.log.aliyuncs.com/logstores/caidongjia/track?APIVersion=0.6.0"

function postTracking(data) {
  axios.post(url, { __logs__: data }).then(res => {
  })
}

// 创建一个arr数组来保存数据
let arr = [];
// 定义一个全局的pushData函数，用于将数据推入arr数组中
const pushData = handleData(arr, postTracking);